package com.itbaizhan.mapper;

import com.itbaizhan.pojo.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface UserMapper2 {
    //根据条件查询用户  通用查询
    List<User> findByCondition(User user);

    //更新用户 测试set与if标签
    void updateUser(User user);

    //choose表示多条件分支
    //测试choose when otherwise
    List<User> findByUsername(String username);

    //测试<foreach> 遍历数组 批量删除
    //collection：遍历的对象类型
    //open：开始的sql语句
    //close：结束的sql语句
    //separator：遍历每项间的分隔符
    //item：表示本次遍历获取的元素，遍历List、Set、数组时表示每项元素。遍历map时表示键值对的值 (value)。
    //index：遍历List、数组时表示遍历的索引。遍历map时表示键值对的键(key)。（index="key"  item="value"）
    //遍历数组
    //根据id删除用户  数组
    //delete from user where id in(2,3,4);
    void deleteUser(int[] ids);

    /*批量新增
    遍历Collection(集合)
    * <foreach> 遍历list和set的方法是一样的
    * insert into user(username,sex,address) values(username1,sex1,address1),(username2,sex2,address2),(username3,sex3,address3)*/
    void insertBatch(List<User> users);


    /*多条件查询  例如：价格范围 品牌 年龄 .....
    * 查询条件键值对  键：属性名   值：属性值
    * select * from where username = ? and sex = ? .....*/
    //这里的map 要起一个传参名 在映射文件中的 collection标签 不可以写map 要用传参名
    List<User> findUser(@Param("queryMap") Map<String,Object> map);


}